package com.brightgenerous.niconama02.actor;

import com.brightgenerous.niconama02.project.madokamagica.Actor01Madoka;
import com.brightgenerous.niconama02.project.madokamagica.Actor02Homura;
import com.brightgenerous.niconama02.project.madokamagica.Actor03Sayaka;
import com.brightgenerous.niconama02.project.madokamagica.Actor04Mami;
import com.brightgenerous.niconama02.project.madokamagica.Actor05QB;
import com.brightgenerous.niconama02.project.madokamagica.Actor06Kyouko;

/**
 * <p>
 * 役者の事務所
 * </p>
 * <p>
 * 本来は、事務所は複数存在するが、便宜上ひとつとする<br>
 * なんらかの仲介業者を通して各事務所の役者にオファーしていると考える
 * </p>
 * 
 * @author brigen
 */
public class ActorOffice {

	/*
	 * 役者の事務所は唯一の存在
	 * Singletonで実装している
	 */
	/** 役者の事務所 */
	private static final ActorOffice sActorOffice = new ActorOffice();

	/**
	 * <p>
	 * [constructor]
	 * </p>
	 * <p>
	 * 外部から役者の事務所を作成することはできない
	 * </p>
	 */
	private ActorOffice() {
	}

	/**
	 * 役者の事務所を返す
	 *
	 * @return 役者の事務所
	 */
	public static ActorOffice getOffice() {
		return sActorOffice;
	}

	/** 悠木碧さん */
	private Yuukiaoi p_yuukiaoi = new Yuukiaoi();

	/** 斎藤千和さん */
	private Saitouchiwa p_saitouchiwa = new Saitouchiwa();

	/** 喜多村英梨さん */
	private Kitamuraeri p_kitamuraeri = new Kitamuraeri();

	/** 水橋かおりさん */
	private Mizuhashikaori p_mizuhashikaori = new Mizuhashikaori();

	/** 加藤英美里さん */
	private Katouemiri p_katouemiri = new Katouemiri();

	/**
	 * まどか役をこなせる役者さんを派遣する
	 *
	 * @return まどか役をこなせる役者さん
	 */
	public Actor01Madoka dispatchActor01() {
//		return p_yuukiaoi;
		return new Omaera();
	}

	/**
	 * ほむら役をこなせる役者さんを派遣する
	 *
	 * @return ほむら役をこなせる役者さん
	 */
	public Actor02Homura dispatchActor02() {
		return p_saitouchiwa;
	}

	/**
	 * さやか役をこなせる役者さんを派遣する
	 *
	 * @return さやか役をこなせる役者さん
	 */
	public Actor03Sayaka dispatchActor03() {
		return p_kitamuraeri;
	}

	/**
	 * マミ役をこなせる役者さんを派遣する
	 *
	 * @return マミ役をこなせる役者さん
	 */
	public Actor04Mami dispatchActor04() {
		return p_mizuhashikaori;
	}

	/**
	 * キュゥべえ役をこなせる役者さんを派遣する
	 *
	 * @return キュゥべえ役をこなせる役者さん
	 */
	public Actor05QB dispatchActor05() {
//		return p_katouemiri;
		return new Brigen();
	}

	/**
	 * 杏子役をこなせる役者さんを派遣する
	 *
	 * @return 杏子役をこなせる役者さん
	 */
	public Actor06Kyouko dispatchActor06() {
		return null;
	}
}
